package com.zzyq.pc.web.user.service;

import java.util.List;

import com.zzyq.pc.common.plugin.db.PageView;
import com.zzyq.pc.web.user.model.Permission;
import com.zzyq.pc.web.user.model.Role;
import com.zzyq.pc.web.user.model.User;

public interface IUserService {
    /**
     * 添加用户
     */
    boolean addUser(User user);

    /**
     * 查询相同用户
     */
    List<User> selectSameList(User user);

    /**
     * 查询用户信息
     */
    List<User> selectAsList(PageView pageView, User user);

    /**
     * 根据UserId查询用户信息
     */
    User selectUserById(Integer userId);

    /**
     * 修改用户信息
     */
    boolean updateUser(User user);

    /**
     * 更新密码
     * 
     * @param userId
     *            用户ID
     * @param pwd
     *            密码
     */
    boolean updatePwd(Integer userId, String pwd);

    /**
     * 根据用户查找角色信息
     */
    List<Role> findRoles(Integer userId);

    /**
     * 根据用户查找其权限信息
     */
    List<Permission> findPermissions(Integer userId);

    /**
     * 根据账号查找用户
     */
    User findUserByAccount(String account);

    /**
     * 根据用户ID删除用户信息
     * 
     * @param userId
     *            用户ID
     */
    boolean deleteById(Integer userId);

    /**
     * 根据部门ID删除部门下的所有用户信息
     * 
     * @param departId
     *            部门ID
     */
    boolean deleteByDepartId(Integer departId);

    /**
     * 根据部门ID查询部门下的所有用户信息
     * 
     * @param departId
     *            部门ID
     */
    List<User> selectByDepartId(Integer departId);

    /**
     * 查询用户存在的未处理任务
     */
    boolean selectTasks(Integer userId);

    /**
     * 根据部门ID查询可报送的上级人员
     */
    List<User> selectForSubmit(Integer userId, Integer departId, Integer maxGrade, Integer minGrade);
}
